#ifndef CHASSIS_H
#define CHASSIS_H

/* 舵轮中心至底盘中心的距离, 单位为m */
#define CHASSIS_CENTER_DISTANCE 0.297f

/* 舵轮半径, 单位为m */
#define WHEEL_R 0.05f

#define GM1_BASECNT 7490
#define GM2_BASECNT 7490
#define GM3_BASECNT 7460
#define GM4_BASECNT 7490

/**
 * @brief 底盘状态枚举
 */
typedef enum
{
    CHASSIS_FREE = 0, // 底盘解锁
    CHASSIS_LOCK      // 底盘死锁
} ChassisState_t;

/**
 * @brief 底盘速度指令的消息结构体
 */
typedef struct
{
    float vX; // m/s
    float vY; // m/s
    float w;  // rad/s
} ChassisSpdCmdMsg_t;

/**
 * @brief 处理舵轮轮系的优劣弧
 * @param _vX: 轮系的x轴速度分量
 * @param _vY: 轮系的y轴速度分量
 * @param posNow: 舵向电机的当前位置
 * @param posPid: 舵向电机的外环pid实例
 * @param spd: 轮毂电机的速度
 * @retval None
 */
void CHASSIS_OptimizeArc(float _vX, float _vY, float posNow, Pid_t *posPid, float *spd);

#endif //CHASSIS_H
